scale: Also queue a resize if font changes
authorMatthias Clasen <mclasen@redhat.com>
Fri, 3 Jun 2016 14:49:29 +0000 (10:49 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 3 Jun 2016 14:49:29 +0000 (10:49 -0400)
As Benjamin pointed out, what AFFECTS_FONT can also affect size,
but the implication is not automatic, so queue a resize manually.

gtk/gtkscale.c

index d2414cb010d5537308430b5084b16bd597500d72..1a66d2c975b1d3197f1c6eb5e72258ffa14f37a2 100644 (file)
@@ -44,6 +44,7 @@
 #include "gtkstylecontextprivate.h"
 #include "gtkstylepropertyprivate.h"
 #include "gtkwidgetprivate.h"
+#include "gtkcsswidgetnodeprivate.h"
 
 #include "a11y/gtkscaleaccessible.h"
 
@@ -1559,7 +1560,10 @@ gtk_scale_value_style_changed (GtkCssNode        *node,
   if (change == NULL ||
       gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT_ATTRS) ||
       gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_FONT))
-    gtk_scale_clear_value_layout (scale);
+    {
+      gtk_scale_clear_value_layout (scale);
+      gtk_widget_queue_resize (GTK_WIDGET (scale));
+    }
 }
 
 static void
@@ -1570,7 +1574,16 @@ gtk_scale_mark_style_changed (GtkCssNode        *node,
   if (change == NULL ||
       gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT_ATTRS) ||
       gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_FONT))
-    g_clear_object (&mark->layout);
+    {
+      GtkCssNode *widget_node;
+      GtkWidget *scale;
+
+      g_clear_object (&mark->layout);
+
+      widget_node = gtk_css_node_get_parent (gtk_css_node_get_parent (gtk_css_node_get_parent (node)));
+      scale = gtk_css_widget_node_get_widget (GTK_CSS_WIDGET_NODE (widget_node));
+      gtk_widget_queue_resize (GTK_WIDGET (scale));
+    }
 }
 
 static void